#ifndef IMAGECACHEITEM_H
#define IMAGECACHEITEM_H

#include <QImage>
#include <QString>
#include <QVariantMap>

extern "C++" {
/**
 * @brief 坐标轴参数结构体
 * 存储图像坐标轴相关的单位转换比例和单位字符串
 */
struct AxisParameters {
    double lengthRatio;            // 长度单位转换比例
    double timeRatio;              // 时间单位转换比例
    double wavelengthRatio;        // 波长转换比例
    QString lengthUnit;            // 长度单位字符串
    QString timeUnit;              // 时间单位字符串
    QString wavelengthUnit;        // 波长单位字符串
    int xAxisUnit;                 // X轴单位类型（使用int而不是枚举，简化实现）
    int yAxisUnit;                 // Y轴单位类型（使用int而不是枚举，简化实现）
};

/**
 * @brief 图像缓存项结构体
 * 存储单个图像的完整信息，包括原始图像、处理后图像、文件路径和各种参数
 */
struct ImageCacheItem {
    QImage originalImage;          // 原始图像
    QImage processedImage;         // 处理后图像
    QString originalFilePath;      // 原始文件路径
    QString processedFilePath;     // 处理后文件路径
    QString paramsFilePath;        // 参数配置文件路径
    AxisParameters axisParams;     // 坐标轴参数
    QList<QVariantMap> processingParams;  // 图像处理参数，按处理顺序排列的所有参数
    bool hasProcessedImage;        // 是否有处理后图像
};
} // extern "C++"

#endif // IMAGECACHEITEM_H